package q2;

import q1.Local;

public class RepositorioLocais implements InterfaceRepositorio {

	private Local[] locais;
	private int cont;

	public RepositorioLocais() {
		locais = new Local[2];
		cont = 0;
	}

	@Override
	public void adicionar(Object o) {
		Local l = (Local) o;

		if (cont == locais.length) {
			dobrarArray();
		}

		locais[cont] = l;
		cont++;
	}

	private void dobrarArray() {
		Local[] temp = new Local[cont * 2];
		for (int i = 0; i < cont; i++) {
			temp[i] = locais[i];
		}
		locais = temp;
	}

	@Override
	public void remover(Object o) {
		Local p = (Local) o;

		int i = 0;
		while (i < cont && !locais[i].getNome().equals(p.getNome())) {
			i++;
		}

		if (i < cont) {
			for (int j = i; j < cont - 1; j++) {
				locais[j] = locais[j + 1];
			}
			cont--;
		}
	}

	@Override
	public Object buscar(String key) {
		int i = 0;
		while (i < cont && !locais[i].getNome().equals(key)) {
			i++;
		}

		if (i < cont) {
			return locais[i];
		} else {
			return null;
		}
	}

	@Override
	public boolean verificar(Object o) {
		Local l = (Local) o;

		int i = 0;
		while (i < cont && !locais[i].getNome().equals(l.getNome())) {
			i++;
		}

		if (i < cont) {
			return true;
		}

		return false;
	}

	@Override
	public void atualizar(Object o) {
		Local l = (Local) o;

		int i = 0;
		while (i < cont && locais[i].getNome().equals(l.getNome())) {
			i++;
		}
		if (i < cont) {
			locais[i].setInfo(l.getInfo());
			locais[i].setRange(l.getRange());
		}
	}

}
